﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Interfaces;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

namespace Model
{
    [Serializable]
    public class Deltager : Interfaces.IDeltager
    {
        #region Attributes
        private string navn, efternavn, klub;
        private int rating, nr, deltagerID;
        private double korrektion, forventetscore;
        private List<Runde> listeRunde;
        #endregion

        #region Constructor
        public Deltager(string navn, string efternavn, string klub, int nr, int deltagerID, int rating, double korrektion)
        {
            this.navn = navn;
            this.efternavn = efternavn;
            this.klub = klub;
            this.nr = nr;
            this.rating = rating;
            this.korrektion = korrektion;
            this.deltagerID = deltagerID;

            listeRunde = new List<Runde>();
        }
        #endregion

        #region Methods
        public void TilføjRunde(int rundeNr, int modstander, int farve, double resultat, double ialt, int placering, int rundeID)
        {
            Runde runde = new Runde(rundeNr, modstander, farve, resultat, ialt, placering, rundeID);
            listeRunde.Add(runde);
        }

        // Er på deltageren, skal finde den rigtige runde
        public Runde FindRunde(int rundenr)
        {
            foreach (Runde midlertidigRunde in listeRunde)
            {
                if (midlertidigRunde.RundeNr == rundenr)
                {
                    return midlertidigRunde;
                }
            }
            return null;
        }

        // Rediger oplysninger
        public void RedigerRunde(Runde aktuelRunde, int modstander, int farve, double resultat, double ialt, int placering)
        {
            aktuelRunde.Modstander = modstander;
            aktuelRunde.Farve = farve;
            aktuelRunde.Resultat = resultat;
            aktuelRunde.Ialt = ialt;
            aktuelRunde.Placering = placering;
        }

        public IEnumerator GetRundeIterator()
        {
            return listeRunde.GetEnumerator();
        }
        #endregion

        #region Properties
        public string Navn
        {
            get { return navn; }
            set { navn = value; }
        }

        public string Efternavn
        {
            get { return efternavn; }
            set { efternavn = value; }
        }

        public string Klub
        {
            get { return klub; }
            set { klub = value; }
        }

        public int Rating
        {
            get { return rating; }
            set { rating = value; }
        }

        public int Nr
        {
            get { return nr; }
            set { nr = value; }
        }

        public double Korrektion
        {
            get { return korrektion; }
            set { korrektion = value; }
        }

        public double Forventetscore
        {
            get { return forventetscore; }
            set { forventetscore = value; }
        }

        public int DeltagerID
        {
            get { return deltagerID; }
        }

        public List<Runde> ListeRunde
        {
            get { return listeRunde; }
        }
        #endregion
    }
}
